package com.ruoyi.common.utils.security;

import java.security.MessageDigest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Md5加密方法
 * 
 * @author ruoyi
 */
public class Md5Utils{
	private static final Logger log = LoggerFactory.getLogger(Md5Utils.class);

	private static byte[] md5(String s){
		MessageDigest algorithm;
		try{
			algorithm = MessageDigest.getInstance("MD5");
			algorithm.reset();
			algorithm.update(s.getBytes("UTF-8"));
			byte[] messageDigest = algorithm.digest();
			return messageDigest;
		}catch(Exception e){
			log.error("MD5 Error...", e);
		}
		return null;
	}

	private static final String toHex(byte hash[]){
		if(hash == null){
			return null;
		}
		StringBuffer buf = new StringBuffer(hash.length * 2);
		int i;

		for(i = 0; i < hash.length; i++){
			if((hash[i] & 0xff) < 0x10){
				buf.append("0");
			}
			buf.append(Long.toString(hash[i] & 0xff, 16));
		}
		return buf.toString();
	}

	public static String hash(String s){
		try{
			return new String(toHex(md5(s)).getBytes("UTF-8"), "UTF-8");
		}catch(Exception e){
			log.error("not supported charset...{}", e);
			return s;
		}
	}
}
